package it.azienda.managerworkstandard.view;

import it.azienda.framework.persistenza.DAOConnectionSingleton;
import it.azienda.framework.utilita.Utilita;
import it.azienda.framework.view.Dettaglio;
import it.azienda.managerworkstandard.modello.BeanFattura;
import it.azienda.managerworkstandard.modello.BeanFatturaAcquistoDett;
import it.azienda.managerworkstandard.modello.BeanLogin;
import it.azienda.managerworkstandard.modello.BeanPrimaNota;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import org.hibernate.Query;
import org.hibernate.Session;

public class DettaglioBenvenuto extends Dettaglio {

    public DettaglioBenvenuto() {
        Utilita.getRequest().removeAttribute("formCodFedelta");
        Utilita.getSession().removeAttribute("formCodFedelta");
        Utilita.getRequest().removeAttribute("beanCliente");
        Utilita.getSession().removeAttribute("beanCliente");

    }
    private java.sql.Date dataDa;
    private java.sql.Date dataA;
    private ArrayList listaScadenziarioFatt;
    private ArrayList listaScadenziarioCli;

    public ArrayList getListaScadenziarioFatt() {
        ArrayList listaScadenziarioFatt = new ArrayList();
        try {
            BeanLogin login = (BeanLogin) Utilita.getSession().getAttribute("login");
            Integer annoGestione = new Integer(login.getAnnoGestione().intValue() - 1);
            this.dataDa = java.sql.Date.valueOf(annoGestione.toString() + "-01-01");
            this.dataA = java.sql.Date.valueOf(login.getAnnoGestione().toString() + "-12-31");

            String query = "select beanFatturaAcquistoDett from  BeanFatturaAcquisto beanFatturaAcquisto,"
                    + " BeanFatturaAcquistoDett  beanFatturaAcquistoDett"
                    + " where beanFatturaAcquistoDett.scadenza between :dataDa and :dataA"
                    + " and beanFatturaAcquisto.id = beanFatturaAcquistoDett.beanFatturaAcquisto.id"
                    + " order by beanFatturaAcquistoDett.scadenza";

            Session session = session = DAOConnectionSingleton.newSession();
            Query q = null;
            DAOConnectionSingleton.beginTransaction();
            q = session.createQuery(query).setDate("dataDa", dataDa).setDate("dataA", dataA);
            ArrayList lista = (ArrayList) q.list();
            DAOConnectionSingleton.commitTransaction();

            for (int i = 0; i < lista.size(); i++) {
                BeanFatturaAcquistoDett beanFatturaAcquistoDett = (BeanFatturaAcquistoDett) lista.get(i);
                if (beanFatturaAcquistoDett.getImportoRata() != null) {
                    if (beanFatturaAcquistoDett.getPagato().equals("N")) {
                        BeanPrimaNota primaNota = new BeanPrimaNota();
                        String[] splitData = beanFatturaAcquistoDett.getBeanFatturaAcquisto().getData().toString().split("-");
                        String descrizione = "";
                        if (beanFatturaAcquistoDett.getBeanFatturaAcquisto().getBeanFornitore() != null) {
                            descrizione += "Fornitore: " + beanFatturaAcquistoDett.getBeanFatturaAcquisto().getBeanFornitore().getRagioneSociale() + " - ";
                        }
                        descrizione += "Fattura numero " + beanFatturaAcquistoDett.getBeanFatturaAcquisto().getNumeroFattura()
                                + " del " + splitData[2].toString() + "/" + splitData[1].toString() + "/" + splitData[0].toString();
                        descrizione += ", Scadenza Rata Numero: " + beanFatturaAcquistoDett.getNumRata() + "/" + beanFatturaAcquistoDett.getBeanFatturaAcquisto().getNumeroRate();
                        splitData = beanFatturaAcquistoDett.getScadenza().toString().split("-");
                        descrizione += " il " + splitData[2].toString() + "/" + splitData[1].toString() + "/" + splitData[0].toString() + " ";
                        primaNota.setDescrizione(descrizione);
                        primaNota.setUscVarie(beanFatturaAcquistoDett.getImportoRata());
                        listaScadenziarioFatt.add(primaNota);
                    }
                }
            }
        } catch (Exception e) {
            System.out.println("Errore " + e);
        }
        if(listaScadenziarioFatt == null){
            listaScadenziarioFatt = new ArrayList();
        }
        return listaScadenziarioFatt;
    }

    public Double arrotonda(Object obj, int precisione) {
        Double valore = (Double) obj;
        Double valoreArr = new Double(0);
        double pot = Math.pow(10, precisione);
        double v = valore.doubleValue() * pot;
        valoreArr = new Double(Math.round(v) / pot);
        return valoreArr;
    }

    public void setListaScadenziarioFatt(ArrayList listaScadenziarioFatt) {
        this.listaScadenziarioFatt = listaScadenziarioFatt;
    }

    public ArrayList getListaScadenziarioCli() {
        ArrayList listaScadenziarioCli = new ArrayList();
        try {
            BeanLogin login = (BeanLogin) Utilita.getSession().getAttribute("login");
            Integer annoGestione = new Integer(login.getAnnoGestione().intValue() - 1);
            this.dataDa = java.sql.Date.valueOf(annoGestione.toString() + "-01-01");
            this.dataA = java.sql.Date.valueOf(login.getAnnoGestione().toString() + "-12-31");

            String query = "select beanFattura from BeanFattura beanFattura"
                    + " where beanFattura.data between :dataDa and :dataA"
                    + " order by beanFattura.data";

            Session session = session = DAOConnectionSingleton.newSession();
            Query q = null;
            DAOConnectionSingleton.beginTransaction();
            q = session.createQuery(query).setDate("dataDa", dataDa).setDate("dataA", dataA);
            ArrayList lista = (ArrayList) q.list();
            DAOConnectionSingleton.commitTransaction();

            for (int i = 0; i < lista.size(); i++) {
                BeanFattura beanFattura = (BeanFattura) lista.get(i);
                //RATA 1
                if (beanFattura.getData1() != null && beanFattura.getImporto1() != null) {
                    if (beanFattura.getPagato1().equals("N")) {
                        BeanPrimaNota primaNota = new BeanPrimaNota();
                        String[] splitData = beanFattura.getData().toString().split("-");
                        String descrizione = "";
                        if (beanFattura.getBeanCliente() != null) {
                            descrizione += "Cliente: " + beanFattura.getBeanCliente().getRagioneSociale() + " - ";
                        }
                        descrizione += "Fattura numero " + beanFattura.getCodice()
                                + " del " + splitData[2].toString() + "/" + splitData[1].toString() + "/" + splitData[0].toString();
                        splitData = beanFattura.getData1().toString().split("-");
                        descrizione += ", Scadenza Rata n.1: " + splitData[2].toString() + "/" + splitData[1].toString() + "/" + splitData[0].toString();

                        primaNota.setDescrizione(descrizione);
                        if (beanFattura.getImporto1() != null) {
                            primaNota.setEntVarie(beanFattura.getImporto1());
                        }
                        listaScadenziarioCli.add(primaNota);
                    }
                }
                //RATA 2
                if (beanFattura.getData2() != null && beanFattura.getImporto2() != null) {
                    if (beanFattura.getPagato2().equals("N")) {
                        BeanPrimaNota primaNota = new BeanPrimaNota();
                        String[] splitData = beanFattura.getData().toString().split("-");
                        String descrizione = "";
                        if (beanFattura.getBeanCliente() != null) {
                            descrizione += "Cliente: " + beanFattura.getBeanCliente().getRagioneSociale() + " - ";
                        }
                        descrizione += "Fattura numero " + beanFattura.getCodice()
                                + " del " + splitData[2].toString() + "/" + splitData[1].toString() + "/" + splitData[0].toString();
                        splitData = beanFattura.getData2().toString().split("-");
                        descrizione += ", Scadenza Rata n.2: " + splitData[2].toString() + "/" + splitData[1].toString() + "/" + splitData[0].toString();
                        primaNota.setDescrizione(descrizione);
                        if (beanFattura.getImporto2() != null) {
                            primaNota.setEntVarie(beanFattura.getImporto2());
                        }
                        listaScadenziarioCli.add(primaNota);
                    }
                }
                //RATA 3
                if (beanFattura.getData3() != null && beanFattura.getImporto3() != null) {
                    if (beanFattura.getPagato3().equals("N")) {
                        BeanPrimaNota primaNota = new BeanPrimaNota();
                        String[] splitData = beanFattura.getData().toString().split("-");
                        String descrizione = "";
                        if (beanFattura.getBeanCliente() != null) {
                            descrizione += "Cliente: " + beanFattura.getBeanCliente().getRagioneSociale() + " - ";
                        }
                        descrizione += "Fattura numero " + beanFattura.getCodice()
                                + " del " + splitData[2].toString() + "/" + splitData[1].toString() + "/" + splitData[0].toString();
                        splitData = beanFattura.getData3().toString().split("-");
                        descrizione += ", Scadenza Rata n.3: " + splitData[2].toString() + "/" + splitData[1].toString() + "/" + splitData[0].toString();
                        primaNota.setDescrizione(descrizione);
                        if (beanFattura.getImporto3() != null) {
                            primaNota.setEntVarie(beanFattura.getImporto3());
                        }
                        listaScadenziarioCli.add(primaNota);
                    }
                }
                //RATA 4
                if (beanFattura.getData4() != null && beanFattura.getImporto4() != null) {
                    if (beanFattura.getPagato4().equals("N")) {
                        BeanPrimaNota primaNota = new BeanPrimaNota();
                        String[] splitData = beanFattura.getData().toString().split("-");
                        String descrizione = "";
                        if (beanFattura.getBeanCliente() != null) {
                            descrizione += "Cliente: " + beanFattura.getBeanCliente().getRagioneSociale() + " - ";
                        }
                        descrizione += "Fattura numero " + beanFattura.getCodice()
                                + " del " + splitData[2].toString() + "/" + splitData[1].toString() + "/" + splitData[0].toString();
                        splitData = beanFattura.getData4().toString().split("-");
                        descrizione += ", Scadenza Rata n.4: " + splitData[2].toString() + "/" + splitData[1].toString() + "/" + splitData[0].toString();
                        primaNota.setDescrizione(descrizione);
                        if (beanFattura.getImporto4() != null) {
                            primaNota.setEntVarie(beanFattura.getImporto4());
                        }
                        listaScadenziarioCli.add(primaNota);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Errore" + e);
        }
        
        if(listaScadenziarioCli == null){
            listaScadenziarioCli = new ArrayList();
        }
        return listaScadenziarioCli;
    }

    public void setListaScadenziarioCli(ArrayList listaScadenziarioCli) {
        this.listaScadenziarioCli = listaScadenziarioCli;
    }
}
